package com.ruoyi.act.module.service;

import com.github.pagehelper.PageInfo;
import com.ruoyi.act.module.domain.ActProcess;
import org.activiti.engine.task.Task;

import java.util.List;
import java.util.Map;

public interface ITaskService {

    /**
     * 一次获取多个用户任务id和业务主键
     *
     * @param actProcess
     * @return
     */
    List<Map<String, Object>> findTaskList(ActProcess actProcess);

    /**
     * 分页查询任务
     *
     * @param actProcess
     * @return
     */
    PageInfo findPage(ActProcess actProcess);

    /**
     * 用户单个任务实例
     *
     * @param actProcess
     * @return
     */
    Task query(ActProcess actProcess);

    /**
     * 用户实例列表
     *
     * @param actProcess
     * @return
     */
    List<Task> queryList(ActProcess actProcess);

    /**
     * *任务成功执行时调用，并且最终用户提供所需的任务参数。
     *
     * @param taskId
     */
    void complete(String taskId);

    /**
     * *任务成功执行时调用，并且最终用户提供所需的任务参数。
     *
     * @param actProcess
     */
    void complete(ActProcess actProcess);

    /**
     * 用户拾取任务
     *
     * @param actProcess
     */
    void claim(ActProcess actProcess);

    /**
     * 归还任务 或者交接给其他人
     *
     * @param actProcess
     */
    void setAssignee(ActProcess actProcess);

    /**
     * 撤回任务的操作 撤回到操作人当前节点
     * @param actProcess
     */
    boolean withdraw(ActProcess actProcess);
}
